The present invention relates to assigning numbers or other indicators to each of a plurality of clustered components and in particular to assigning numbers or indicators to slave units in a multi-drop stack bus network or other communication system.
A number of computer network and similar systems include a plurality of clustered components such as clustered switches, hubs and the like. It is not uncommon for such clustered devices to be configured in a master/slave relationship such that at least one unit is designated as a master unit which performs control functions with respect to slave units, as will be understood by those of skill in the art. For example, a computer network may include a plurality of network switches, one of which is designated as a master switch with remaining unit designated as slave switches. One approach to providing a master/slave system is an addressing system in which each communication intended for a slave unit is accompanied by or associated with an address and wherein each slave unit will take (appropriate) action only with respect to those communications which are addressed to it. An addressing system has a relatively high overhead, both in terms of the bandwidth needed for the addressing operations or communications and in terms of the components and the complexity involved in providing an addressing system. Accordingly, it would be useful to provide a master-slave system which can be implemented without the need for addressing of slaves in the master/slave system.
In a number of configurations, it is desirable for each slave unit to be assigned a unique identifier such as a number. For convenience of description, identifiers can be designated as xe2x80x9c0xe2x80x9d xe2x80x9c1xe2x80x9d xe2x80x9c2xe2x80x9d . . . xe2x80x9cNxe2x80x9d, although the manner in which the designators can be represented e.g. by binary numbers and the like, can vary widely as will be understood by those of skill in the art. Typically, at least each slave unit should have stored therein (or accessible thereto) its own number (or other designator) and preferably, the master unit should have stored therein (or accessible thereto) information related to the indicators for the various slave units e.g. so that the master unit can determine items such as how many slave units are currently connected, which slave units are coupled to, or will recognize, which ones of a plurality of communication (or other) lines, and the like. Accordingly, it would be useful to provide a method and apparatus for establishing numbers or other identifiers for a plurality of slave units in the master-slave system.
In some systems, identifiers were assigned to or associated with slave units by software systems. For example, a master unit can broadcast polling signals to slaves and perform, e.g., arbitration procedures to associate identifiers with particular slave units. Often, however, software procedures can occupy an undesirably large proportion of processor resources and, typically, will require renegotiation (or rearbitration) in response to changes in the configuration (such as removing a slave unit from system-operable status therein) and the like. Moreover, each such arbitration or negotiation process can be relatively time-consuming and may involve interruption of normal data communications in the system for a relatively long period of time. Accordingly, it would be useful to provide a system for associating numbers or other identifiers with slave units, which can be performed relatively rapidly, avoid at least some occurrences of negotiation or arbitration with the master unit and, which preferably can be performed at least partially without a software implementation, e.g. by hardwired logic or components or substantially by hardware. Preferably, a system for assigning identifiers to slave components is achieved in a manner which is relatively low cost to design, fabricate, install and/or maintain.
In one aspect, the master and the various slave devices are coupled, at least along a first communication link, in a daisy chain fashion i.e. such that each slave device receives communication from a preceding slave device (or, in the case of the first slave device in the daisy chain, from the master) and outputs data along the daisy chain to the next or subsequent slave device (except for the last slave device in the chain). Each slave device receives, on the incoming or input link, input information which can be used to establish or associate a number or other identifier with such slave device and outputs, along the output link to the next slave unit in the chain (if any) output information which differs from the received input information and which enables the next slave device in the chain to establish or associate its own identifier or number. In one embodiment, each link in the daisy chain is an N-wire bus where N is preferably greater than or equal to the number of slave units. The master outputs, e.g. a xe2x80x9chighxe2x80x9d value on a pre-determined line (or pattern) of the N-wire bus (e.g. providing a pull-up voltage on a wire of the N-wire bus). Those of skill in the art will understand how to pull-up and pull-down desired lines. Each slave determines, e.g., which wire of the N-wire bus is the lowest-numbered wire having a low signal or value (if any) and assigns itself a number corresponding to the number of such wire. The slave unit then outputs, to the next sequential slave unit, an output signal in which the wire which is numbered one more than its indicator number is pulled-up. Thus, the first slave unit, in this embodiment, will receive a high signal on the zero wire of the N-wire bus and will set itself equal to number 0. It will then output a high signal on wire number one (1) since one (1) is the next higher number after zero (0). The second slave unit will thus receive a signal which has a high value on the number one (1) wire of the N-wire bus and a low value on all other wires. It will thus, in response, set itself to have an indicator number of one (1) and will output, to the next sequential slave unit, a signal in which wire number two (2) of N-wire bus is pulled-up. In this manner, the system provides auto-detection of the data lines by the master, as well as by the slaves (i.e. without the need for manual setting of switches or other manipulation by a human operator).
In one embodiment, the N-wire bus is used exclusively for establishing or associating identifiers with each slave unit. In another embodiment, after the slave-units have been associated with identifiers, the N-wire bus can be used for other purposes such as control signal or data signal communications. It is possible to, in some embodiments, set, establish or associate numbers or other identifiers with slave units in response to a combination of levels on the various wires of the N-wire bus, e.g., such that high and low levels on various wires provide a binary indication which can be used to establish or associate an identifier, and/or otherwise using coding on the various wires in connection with establishing or associating an identifier with a slave unit.
Although it would be possible to use the associated identifiers as addresses in an addressing system, preferably, the present invention can be implemented without the need for addressing slave units. In one embodiment, a plurality of different communication lines are provided with each slave only xe2x80x9clisteningxe2x80x9d to (or otherwise taking appropriate action with regard to) communications on a communication line associated with the slave identifier number.
In one embodiment, when a slave unit is removed from the daisy chain, becomes inoperable or otherwise is effectively no longer a part of the daisy chain, the data on the input line associated with that slave unit, in the daisy chain, is simply passed through to the output link for that slave unit, unchanged. The present invention can be implemented in a fashion such that, upon removal of a slave unit from the daisy chain, the system can continue operating substantially as before, i.e. without the need for renegotiating or rearbitrating (although renegotiating for associated identifiers can be performed in this situation, if desired). Similarly, in at least some embodiments of the present invention, if an additional slave unit is added to the daisy chain e.g. at the end of the chain, the new unit can establish or associate, e.g., the next sequential available number or identifier (e.g. using the process described above) without the need for renegotiating or otherwise interrupting other slave units. In this manner the system provides dynamic allocation of the data lines. Preferably, the assignment of identifiers in slave units can be performed using, substantially, all passive components e.g. without performing logical operations (other than possibly providing hard-wired logic gates). In some embodiments, it is preferred to provide a system for communicating information relating to the assignment of identifiers, from slave units to the master unit. For example, in some embodiments, it may be desirable for a slave unit to inform the master unit when the information being received in the incoming data link, has changed (possibly indicating removal or malfunction of the preceding slave unit). In some embodiments, it may desirable for the master unit to initiate a renegotiation of identifier associations in response to certain events, such as a slave unit detecting the removal of, or the re-connection of, a preceding slave unit (e.g. as indicated by a change or interruption in the incoming data signal).
In this fashion, switches or other system components can be added or removed from a master slave system while maintaining an operable system of slave numbers or other identifiers in a fashion which is relatively rapid and simple, preferably being based on hardware approaches, i.e. without the need for executing stored programs when associating identifiers with these slave units.
In one aspect, a device and procedure for associating an identifier with each of a plurality of slave units in a master slave system is provided. In one aspect, a master outputs a signal on a multi-line bus with a single, preferably lowest-numbered, line pulled-up and the remaining lines pulled-down. A first slave in a daisy chain communication architecture, in response to the pull-up of the bus wire configures itself with the lowest-numbered slave number, preferably so as to respond to a lowest-numbered com line. The first slave unit then outputs, to the next slave unit, a signal on the multi-line bus with the next-higher numbered line pulled-up and all other lines pulled-down. In response, the second slave unit will configure itself with the second-lowest slave identifier number such as configuring itself to respond to the second-lowest com line, and so forth. The system can be implemented to eliminate the need for slave addressing and can be implemented with relatively few components in a low cost and non-complex fashion.